home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / flex_247.zip / flex_247 / NEWS < prev    next >
Text File  |  1994-08-03  |  27KB  |  704 lines

  1. Changes between release 2.4.7 (03Aug94) and release 2.4.6:
  2.  
  3.     - Fixed serious bug in reading multiple files.
  4.  
  5.     - Fixed bug in scanning NUL's.
  6.  
  7.     - Fixed bug in input() returning 8-bit characters.
  8.  
  9.     - Fixed bug in matching text with embedded NUL's when
  10.       using %array or lex compatibility.
  11.  
  12.     - Fixed multiple invocations of YY_USER_ACTION when using '|'
  13.       continuation action.
  14.  
  15.     - Minor prototyping fixes.
  16.  
  17. Changes between release 2.4.6 (04Jan94) and release 2.4.5:
  18.  
  19.     - Linking with -lfl no longer required if your program includes
  20.       its own yywrap() and main() functions.  (This change will cause
  21.       problems if you have a non-ANSI compiler on a system for which
  22.       sizeof(int) != sizeof(void*) or sizeof(int) != sizeof(size_t).)
  23.  
  24.     - The use of 'extern "C++"' in FlexLexer.h has been modified to
  25.       get around an incompatibility with g++'s header files.
  26.  
  27.  
  28. Changes between release 2.4.5 (11Dec93) and release 2.4.4:
  29.  
  30.     - Fixed bug breaking C++ scanners that use REJECT or variable
  31.       trailing context.
  32.  
  33.     - Fixed serious input problem for interactive scanners on
  34.       systems for which char is unsigned.
  35.  
  36.     - Fixed bug in incorrectly treating '$' operator as variable
  37.       trailing context.
  38.  
  39.     - Fixed bug in -CF table representation that could lead to
  40.       corrupt tables.
  41.  
  42.     - Fixed fairly benign memory leak.
  43.  
  44.     - Added `extern "C++"' wrapper to FlexLexer.h header.  This
  45.       should overcome the g++ 2.5.X problems mentioned in the
  46.       NEWS for release 2.4.3.
  47.  
  48.     - Changed #include of FlexLexer.h to use <> instead of "".
  49.  
  50.     - Added feature to control whether the scanner attempts to
  51.       refill the input buffer once it's exhausted.  This feature
  52.       will be documented in the 2.5 release.
  53.  
  54.  
  55. Changes between release 2.4.4 (07Dec93) and release 2.4.3:
  56.  
  57.     - Fixed two serious bugs in scanning 8-bit characters.
  58.  
  59.     - Fixed bug in YY_USER_ACTION that caused it to be executed
  60.       inappropriately (on the scanner's own internal actions, and
  61.       with incorrect yytext/yyleng values).
  62.  
  63.     - Fixed bug in pointing yyin at a new file and resuming scanning.
  64.  
  65.     - Portability fix regarding min/max/abs macros conflicting with
  66.       function definitions in standard header files.
  67.  
  68.     - Added a virtual LexerError() method to the C++ yyFlexLexer class
  69.       for reporting error messages instead of always using cerr.
  70.  
  71.     - Added warning in flexdoc that the C++ scanning class is presently
  72.       experimental and subject to considerable change between major
  73.       releases.
  74.  
  75.  
  76. Changes between release 2.4.3 (03Dec93) and release 2.4.2:
  77.  
  78.     - Fixed bug causing fatal scanner messages to fail to print.
  79.  
  80.     - Fixed things so FlexLexer.h can be included in other C++
  81.       sources.  One side-effect of this change is that -+ and -CF
  82.       are now incompatible.
  83.  
  84.     - libfl.a now supplies private versions of the the <string.h>/
  85.       <strings.h> string routines needed by flex and the scanners
  86.       it generates, to enhance portability to some BSD systems.
  87.  
  88.     - More robust solution to 2.4.2's flexfatal() bug fix.
  89.  
  90.     - Added ranlib of installed libfl.a.
  91.  
  92.     - Some lint tweaks.
  93.  
  94.     - NOTE: problems have been encountered attempting to build flex
  95.       C++ scanners using g++ version 2.5.X.  The problem is due to an
  96.       unfortunate heuristic in g++ 2.5.X that attempts to discern between
  97.       C and C++ headers.  Because FlexLexer.h is installed (by default)
  98.       in /usr/local/include and not /usr/local/lib/g++-include, g++ 2.5.X
  99.       decides that it's a C header :-(.  So if you have problems, install
  100.       the header in /usr/local/lib/g++-include instead.
  101.  
  102.  
  103. Changes between release 2.4.2 (01Dec93) and release 2.4.1:
  104.  
  105.     - Fixed bug in libfl.a referring to non-existent "flexfatal" function.
  106.  
  107.     - Modified to produce both compress'd and gzip'd tar files for
  108.       distributions (you probably don't care about this change!).
  109.  
  110.  
  111. Changes between release 2.4.1 (30Nov93) and release 2.3.8:
  112.  
  113.     - The new '-+' flag instructs flex to generate a C++ scanner class
  114.       (thanks to Kent Williams).  flex writes an implementation of the
  115.       class defined in FlexLexer.h to lex.yy.cc.  You may include
  116.       multiple scanner classes in your program using the -P flag.  Note
  117.       that the scanner class also provides a mechanism for creating
  118.       reentrant scanners.  The scanner class uses C++ streams for I/O
  119.       instead of FILE*'s (thanks to Tom Epperly).  If the flex executable's
  120.       name ends in '+' then the '-+' flag is automatically on, so creating
  121.       a symlink or copy of "flex" to "flex++" results in a version of
  122.       flex that can be used exclusively for C++ scanners.
  123.  
  124.       Note that without the '-+' flag, flex-generated scanners can still
  125.       be compiled using C++ compilers, though they use FILE*'s for I/O
  126.       instead of streams.
  127.  
  128.       See the "GENERATING C++ SCANNERS" section of flexdoc for details.
  129.  
  130.     - The new '-l' flag turns on maximum AT&T lex compatibility.  In
  131.       particular, -l includes support for "yylineno" and makes yytext
  132.       be an array instead of a pointer.  It does not, however, do away
  133.       with all incompatibilities.  See the "INCOMPATIBILITIES WITH LEX
  134.       AND POSIX" section of flexdoc for details.
  135.  
  136.     - The new '-P' option specifies a prefix to use other than "yy"
  137.       for the scanner's globally-visible variables, and for the
  138.       "lex.yy.c" filename.  Using -P you can link together multiple
  139.       flex scanners in the same executable.
  140.  
  141.     - The distribution includes a "texinfo" version of flexdoc.1,
  142.       contributed by Roland Pesch (thanks also to Marq Kole, who
  143.       contributed another version).  It has not been brought up to
  144.       date, but reflects version 2.3.  See MISC/flex.texinfo.
  145.  
  146.       The flex distribution will soon include G.T. Nicol's flex
  147.       manual; he is presently bringing it up-to-date for version 2.4.
  148.  
  149.     - yywrap() is now a function, and you now *must* link flex scanners
  150.       with libfl.a.
  151.  
  152.     - Site-configuration is now done via an autoconf-generated
  153.       "configure" script contributed by Francois Pinard.
  154.  
  155.     - Scanners now use fread() (or getc(), if interactive) and not
  156.       read() for input.  A new "table compression" option, -Cr,
  157.       overrides this change and causes the scanner to use read()
  158.       (because read() is a bit faster than fread()).  -f and -F
  159.       are now equivalent to -Cfr and -CFr; i.e., they imply the
  160.       -Cr option.
  161.  
  162.     - In the blessed name of POSIX compliance, flex supports "%array"
  163.       and "%pointer" directives in the definitions (first) section of
  164.       the scanner specification.  The former specifies that yytext
  165.       should be an array (of size YYLMAX), the latter, that it should
  166.       be a pointer.  The array version of yytext is universally slower
  167.       than the pointer version, but has the advantage that its contents
  168.       remain unmodified across calls to input() and unput() (the pointer
  169.       version of yytext is, still, trashed by such calls).
  170.  
  171.       "%array" cannot be used with the '-+' C++ scanner class option.
  172.  
  173.     - The new '-Ca' option directs flex to trade off memory for
  174.       natural alignment when generating a scanner's tables.  In
  175.       particular, table entries that would otherwise be "short"
  176.       become "long".
  177.  
  178.     - The new '-h' option produces a summary of the flex flags.
  179.  
  180.     - The new '-V' option reports the flex version number and exits.
  181.  
  182.     - The new scanner macro YY_START returns an integer value
  183.       corresponding to the current start condition.  You can return
  184.       to that start condition by passing the value to a subsequent
  185.       "BEGIN" action.  You also can implement "start condition stacks"
  186.       by storing the values in an integer stack.
  187.  
  188.     - You can now redefine macros such as YY_INPUT by just #define'ing
  189.       them to some other value in the first section of the flex input;
  190.       no need to first #undef them.
  191.  
  192.     - flex now generates warnings for rules that can't be matched.
  193.       These warnings can be turned off using the new '-w' flag.  If
  194.       your scanner uses REJECT then you will not get these warnings.
  195.  
  196.     - If you specify the '-s' flag but the default rule can be matched,
  197.       flex now generates a warning.
  198.  
  199.     - "yyleng" is now a global, and may be modified by the user (though
  200.       doing so and then using yymore() will yield weird results).
  201.  
  202.     - Name definitions in the first section of a scanner specification
  203.       can now include a leading '^' or trailing '$' operator.  In this
  204.       case, the definition is *not* pushed back inside of parentheses.
  205.  
  206.     - Scanners with compressed tables are now "interactive" (-I option)
  207.       by default.  You can suppress this attribute (which makes them
  208.       run slightly slower) using the new '-B' flag.
  209.  
  210.     - Flex now generates 8-bit scanners by default, unless you use the
  211.       -Cf or -CF compression options (-Cfe  and -CFe result in 8-bit
  212.       scanners).  You can force it to generate a 7-bit scanner using
  213.       the new '-7' flag.  You can build flex to generate 8-bit scanners
  214.       for -Cf and -CF, too, by adding -DDEFAULT_CSIZE=256 to CFLAGS
  215.       in the Makefile.
  216.  
  217.     - You no longer need to call the scanner routine yyrestart() to
  218.       inform the scanner that you have switched to a new file after
  219.       having seen an EOF on the current input file.  Instead, just
  220.       point yyin at the new file and continue scanning.
  221.  
  222.     - You no longer need to invoke YY_NEW_FILE in an <<EOF>> action
  223.       to indicate you wish to continue scanning.  Simply point yyin
  224.       at a new file.
  225.  
  226.     - A leading '#' no longer introduces a comment in a flex input.
  227.  
  228.     - flex no longer considers formfeed ('\f') a whitespace character.
  229.  
  230.     - %t, I'm happy to report, has been nuked.
  231.  
  232.     - The '-p' option may be given twice ('-pp') to instruct flex to
  233.       report minor performance problems as well as major ones.
  234.  
  235.     - The '-v' verbose output no longer includes start/finish time
  236.       information.
  237.  
  238.     - Newlines in flex inputs can optionally include leading or
  239.       trailing carriage-returns ('\r'), in support of several PC/Mac
  240.       run-time libraries that automatically include these.
  241.  
  242.     - A start condition of the form "<*>" makes the following rule
  243.       active in every start condition, whether exclusive or inclusive.
  244.  
  245.     - The following items have been corrected in the flex documentation:
  246.  
  247.         - '-C' table compression options *are* cumulative.
  248.  
  249.         - You may modify yytext but not lengthen it by appending
  250.           characters to the end.  Modifying its final character
  251.           will affect '^' anchoring for the next rule matched
  252.           if the character is changed to or from a newline.
  253.  
  254.         - The term "backtracking" has been renamed "backing up",
  255.           since it is a one-time repositioning and not a repeated
  256.           search.  What used to be the "lex.backtrack" file is now
  257.           "lex.backup".
  258.  
  259.         - Unindented "/* ... */" comments are allowed in the first
  260.           flex input section, but not in the second.
  261.  
  262.         - yyless() can only be used in the flex input source, not
  263.           externally.
  264.  
  265.         - You can use "yyrestart(yyin)" to throw away the
  266.           current contents of the input buffer.
  267.  
  268.         - To write high-speed scanners, attempt to match as much
  269.           text as possible with each rule.  See MISC/fastwc/README
  270.           for more information.
  271.  
  272.         - Using the beginning-of-line operator ('^') is fairly
  273.           cheap.  Using unput() is expensive.  Using yyless() is
  274.           cheap.
  275.  
  276.         - An example of scanning strings with embedded escape
  277.           sequences has been added.
  278.  
  279.         - The example of backing-up in flexdoc was erroneous; it
  280.           has been corrected.
  281.  
  282.     - A flex scanner's internal buffer now dynamically grows if needed
  283.       to match large tokens.  Note that growing the buffer presently
  284.       requires rescanning the (large) token, so consuming a lot of
  285.       text this way is a slow process.  Also note that presently the
  286.       buffer does *not* grow if you unput() more text than can fit
  287.       into the buffer.
  288.  
  289.     - The MISC/ directory has been reorganized; see MISC/README for
  290.       details.
  291.  
  292.     - yyless() can now be used in the third (user action) section
  293.       of a scanner specification, thanks to Ceriel Jacobs.  yyless()
  294.       remains a macro and cannot be used outside of the scanner source.
  295.  
  296.     - The skeleton file is no longer opened at run-time, but instead
  297.       compiled into a large string array (thanks to John Gilmore and
  298.       friends at Cygnus).  You can still use the -S flag to point flex
  299.       at a different skeleton file, though if you use this option let
  300.       me know, as I plan to otherwise do away with -S in the near
  301.       future.
  302.  
  303.     - flex no longer uses a temporary file to store the scanner's
  304.       actions.
  305.  
  306.     - A number of changes have been made to decrease porting headaches.
  307.       In particular, flex no longer uses memset() or ctime(), and
  308.       provides a single simple mechanism for dealing with C compilers
  309.       that still define malloc() as returning char* instead of void*.
  310.  
  311.     - Flex now detects if the scanner specification requires the -8 flag
  312.       but the flag was not given or on by default.
  313.  
  314.     - A number of table-expansion fencepost bugs have been fixed,
  315.       making flex more robust for generating large scanners.
  316.  
  317.     - flex more consistently identifies the location of errors in
  318.       its input.
  319.  
  320.     - YY_USER_ACTION is now invoked only for "real" actions, not for
  321.       internal actions used by the scanner for things like filling
  322.       the buffer or handling EOF.
  323.  
  324.     - The rule "[^]]" now matches any character other than a ']';
  325.       formerly it matched any character at all followed by a ']'.
  326.       This change was made for compatibility with AT&T lex.
  327.  
  328.     - A large number of miscellaneous bugs have been found and fixed
  329.       thanks to Gerhard Wilhelms.
  330.  
  331.     - The source code has been heavily reformatted, making patches
  332.       relative to previous flex releases no longer accurate.
  333.  
  334.  
  335. Changes between 2.3 Patch #8 (21Feb93) and 2.3 Patch #7:
  336.  
  337.     - Fixed bugs in dynamic memory allocation leading to grievous
  338.       fencepost problems when generating large scanners.
  339.     - Fixed bug causing infinite loops on character classes with 8-bit
  340.       characters in them.
  341.     - Fixed bug in matching repetitions with a lower bound of 0.
  342.     - Fixed bug in scanning NUL characters using an "interactive" scanner.
  343.     - Fixed bug in using yymore() at the end of a file.
  344.     - Fixed bug in misrecognizing rules with variable trailing context.
  345.     - Fixed bug compiling flex on Suns using gcc 2.
  346.     - Fixed bug in not recognizing that input files with the character
  347.       ASCII 128 in them require the -8 flag.
  348.     - Fixed bug that could cause an infinite loop writing out
  349.       error messages.
  350.     - Fixed bug in not recognizing old-style lex % declarations if
  351.       followed by a tab instead of a space.
  352.     - Fixed potential crash when flex terminated early (usually due
  353.       to a bad flag) and the -v flag had been given.
  354.     - Added some missing declarations of void functions.
  355.     - Changed to only use '\a' for __STDC__ compilers.
  356.     - Updated mailing addresses.
  357.  
  358.  
  359. Changes between 2.3 Patch #7 (28Mar91) and 2.3 Patch #6:
  360.  
  361.     - Fixed out-of-bounds array access that caused bad tables
  362.       to be produced on machines where the bad reference happened
  363.       to yield a 1.  This caused problems installing or running
  364.       flex on some Suns, in particular.
  365.  
  366.  
  367. Changes between 2.3 Patch #6 (29Aug90) and 2.3 Patch #5:
  368.  
  369.     - Fixed a serious bug in yymore() which basically made it
  370.       completely broken.  Thanks goes to Jean Christophe of
  371.       the Nethack development team for finding the problem
  372.       and passing along the fix.
  373.  
  374.  
  375. Changes between 2.3 Patch #5 (16Aug90) and 2.3 Patch #4:
  376.  
  377.     - An up-to-date version of initscan.c so "make test" will
  378.       work after applying the previous patches
  379.  
  380.  
  381. Changes between 2.3 Patch #4 (14Aug90) and 2.3 Patch #3:
  382.  
  383.     - Fixed bug in hexadecimal escapes which allowed only digits,
  384.       not letters, in escapes
  385.     - Fixed bug in previous "Changes" file!
  386.  
  387.  
  388. Changes between 2.3 Patch #3 (03Aug90) and 2.3 Patch #2:
  389.  
  390.     - Correction to patch #2 for gcc compilation; thanks goes to
  391.       Paul Eggert for catching this.
  392.  
  393.  
  394. Changes between 2.3 Patch #2 (02Aug90) and original 2.3 release:
  395.  
  396.     - Fixed (hopefully) headaches involving declaring malloc()
  397.       and free() for gcc, which defines __STDC__ but (often) doesn't
  398.       come with the standard include files such as <stdlib.h>.
  399.       Reordered #ifdef maze in the scanner skeleton in the hope of
  400.       getting the declarations right for cfront and g++, too.
  401.  
  402.     - Note that this patch supercedes patch #1 for release 2.3,
  403.       which was never announced but was available briefly for
  404.       anonymous ftp.
  405.  
  406.  
  407. Changes between 2.3 (full) release of 28Jun90 and 2.2 (alpha) release:
  408.  
  409.     User-visible:
  410.  
  411.     - A lone <<EOF>> rule (that is, one which is not qualified with
  412.       a list of start conditions) now specifies the EOF action for
  413.       *all* start conditions which haven't already had <<EOF>> actions
  414.       given.  To specify an end-of-file action for just the initial
  415.       state, use <INITIAL><<EOF>>.
  416.  
  417.     - -d debug output is now contigent on the global yy_flex_debug
  418.       being set to a non-zero value, which it is by default.
  419.  
  420.     - A new macro, YY_USER_INIT, is provided for the user to specify
  421.       initialization action to be taken on the first call to the
  422.       scanner.  This action is done before the scanner does its
  423.       own initialization.
  424.  
  425.     - yy_new_buffer() has been added as an alias for yy_create_buffer()
  426.  
  427.     - Comments beginning with '#' and extending to the end of the line
  428.       now work, but have been deprecated (in anticipation of making
  429.       flex recognize #line directives).
  430.  
  431.     - The funky restrictions on when semi-colons could follow the
  432.       YY_NEW_FILE and yyless macros have been removed.  They now
  433.       behave identically to functions.
  434.  
  435.     - A bug in the sample redefinition of YY_INPUT in the documentation
  436.       has been corrected.
  437.  
  438.     - A bug in the sample simple tokener in the documentation has
  439.       been corrected.
  440.  
  441.     - The documentation on the incompatibilities between flex and
  442.       lex has been reordered so that the discussion of yylineno
  443.       and input() come first, as it's anticipated that these will
  444.       be the most common source of headaches.
  445.  
  446.  
  447.     Things which didn't used to be documented but now are:
  448.  
  449.     - flex interprets "^foo|bar" differently from lex.  flex interprets
  450.       it as "match either a 'foo' or a 'bar', providing it comes at the
  451.       beginning of a line", whereas lex interprets it as "match either
  452.       a 'foo' at the beginning of a line, or a 'bar' anywhere".
  453.  
  454.     - flex initializes the global "yyin" on the first call to the
  455.       scanner, while lex initializes it at compile-time.
  456.  
  457.     - yy_switch_to_buffer() can be used in the yywrap() macro/routine.
  458.  
  459.     - flex scanners do not use stdio for their input, and hence when
  460.       writing an interactive scanner one must explictly call fflush()
  461.       after writing out a prompt.
  462.  
  463.     - flex scanner can be made reentrant (after a fashion) by using
  464.       "yyrestart( yyin );".  This is useful for interactive scanners
  465.       which have interrupt handlers that long-jump out of the scanner.
  466.  
  467.     - a defense of why yylineno is not supported is included, along
  468.       with a suggestion on how to convert scanners which rely on it.
  469.  
  470.  
  471.     Other changes:
  472.  
  473.     - Prototypes and proper declarations of void routines have
  474.       been added to the flex source code, courtesy of Kevin B. Kenny.
  475.  
  476.     - Routines dealing with memory allocation now use void* pointers
  477.       instead of char* - see Makefile for porting implications.
  478.  
  479.     - Error-checking is now done when flex closes a file.
  480.  
  481.     - Various lint tweaks were added to reduce the number of gripes.
  482.  
  483.     - Makefile has been further parameterized to aid in porting.
  484.  
  485.     - Support for SCO Unix added.
  486.  
  487.     - Flex now sports the latest & greatest UC copyright notice
  488.       (which is only slightly different from the previous one).
  489.  
  490.     - A note has been added to flexdoc.1 mentioning work in progress
  491.       on modifying flex to generate straight C code rather than a
  492.       table-driven automaton, with an email address of whom to contact
  493.       if you are working along similar lines.
  494.  
  495.  
  496. Changes between 2.2 Patch #3 (30Mar90) and 2.2 Patch #2:
  497.  
  498.     - fixed bug which caused -I scanners to bomb
  499.  
  500.  
  501. Changes between 2.2 Patch #2 (27Mar90) and 2.2 Patch #1:
  502.  
  503.     - fixed bug writing past end of input buffer in yyunput()
  504.     - fixed bug detecting NUL's at the end of a buffer
  505.  
  506.  
  507. Changes between 2.2 Patch #1 (23Mar90) and 2.2 (alpha) release:
  508.  
  509.     - Makefile fixes: definition of MAKE variable for systems
  510.       which don't have it; installation of flexdoc.1 along with
  511.       flex.1; fixed two bugs which could cause "bigtest" to fail.
  512.  
  513.     - flex.skel fix for compiling with g++.
  514.  
  515.     - README and flexdoc.1 no longer list an out-of-date BITNET address
  516.       for contacting me.
  517.  
  518.     - minor typos and formatting changes to flex.1 and flexdoc.1.
  519.  
  520.  
  521. Changes between 2.2 (alpha) release of March '90 and previous release:
  522.  
  523.     User-visible:
  524.  
  525.     - Full user documentation now available.
  526.  
  527.     - Support for 8-bit scanners.
  528.  
  529.     - Scanners now accept NUL's.
  530.  
  531.     - A facility has been added for dealing with multiple
  532.       input buffers.
  533.  
  534.     - Two manual entries now.  One which fully describes flex
  535.       (rather than just its differences from lex), and the
  536.       other for quick(er) reference.
  537.  
  538.     - A number of changes to bring flex closer into compliance
  539.       with the latest POSIX lex draft:
  540.  
  541.         %t support
  542.         flex now accepts multiple input files and concatenates
  543.             them together to form its input
  544.         previous -c (compress) flag renamed -C
  545.         do-nothing -c and -n flags added
  546.         Any indented code or code within %{}'s in section 2 is
  547.             now copied to the output
  548.  
  549.     - yyleng is now a bona fide global integer.
  550.  
  551.     - -d debug information now gives the line number of the
  552.       matched rule instead of which number rule it was from
  553.       the beginning of the file.
  554.  
  555.     - -v output now includes a summary of the flags used to generate
  556.       the scanner.
  557.  
  558.     - unput() and yyrestart() are now globally callable.
  559.  
  560.     - yyrestart() no longer closes the previous value of yyin.
  561.  
  562.     - C++ support; generated scanners can be compiled with C++ compiler.
  563.  
  564.     - Primitive -lfl library added, containing default main()
  565.       which calls yylex().  A number of routines currently living
  566.       in the scanner skeleton will probably migrate to here
  567.       in the future (in particular, yywrap() will probably cease
  568.       to be a macro and instead be a function in the -lfl library).
  569.  
  570.     - Hexadecimal (\x) escape sequences added.
  571.  
  572.     - Support for MS-DOS, VMS, and Turbo-C integrated.
  573.  
  574.     - The %used/%unused operators have been deprecated.  They
  575.       may go away soon.
  576.  
  577.  
  578.     Other changes:
  579.  
  580.     - Makefile enhanced for easier testing and installation.
  581.     - The parser has been tweaked to detect some erroneous
  582.       constructions which previously were missed.
  583.     - Scanner input buffer overflow is now detected.
  584.     - Bugs with missing "const" declarations fixed.
  585.     - Out-of-date Minix/Atari patches provided.
  586.     - Scanners no longer require printf() unless FLEX_DEBUG is being used.
  587.     - A subtle input() bug has been fixed.
  588.     - Line numbers for "continued action" rules (those following
  589.       the special '|' action) are now correct.
  590.     - unput() bug fixed; had been causing problems porting flex to VMS.
  591.     - yymore() handling rewritten to fix bug with interaction
  592.       between yymore() and trailing context.
  593.     - EOF in actions now generates an error message.
  594.     - Bug involving -CFe and generating equivalence classes fixed.
  595.     - Bug which made -CF be treated as -Cf fixed.
  596.     - Support for SysV tmpnam() added.
  597.     - Unused #define's for scanner no longer generated.
  598.     - Error messages which are associated with a particular input
  599.       line are now all identified with their input line in standard
  600.       format.
  601.     - % directives which are valid to lex but not to flex are
  602.       now ignored instead of generating warnings.
  603.     - -DSYS_V flag can now also be specified -DUSG for System V
  604.       compilation.
  605.  
  606.  
  607. Changes between 2.1 beta-test release of June '89 and previous release:
  608.  
  609.     User-visible:
  610.  
  611.     - -p flag generates a performance report to stderr.  The report
  612.       consists of comments regarding features of the scanner rules
  613.       which result in slower scanners.
  614.  
  615.     - -b flag generates backtracking information to lex.backtrack.
  616.       This is a list of scanner states which require backtracking
  617.       and the characters on which they do so.  By adding rules
  618.       one can remove backtracking states.  If all backtracking states
  619.       are eliminated, the generated scanner will run faster.
  620.       Backtracking is not yet documented in the manual entry.
  621.  
  622.     - Variable trailing context now works, i.e., one can have
  623.       rules like "(foo)*/[ \t]*bletch".  Some trailing context
  624.       patterns still cannot be properly matched and generate
  625.       error messages.  These are patterns where the ending of the
  626.       first part of the rule matches the beginning of the second
  627.       part, such as "zx*/xy*", where the 'x*' matches the 'x' at
  628.       the beginning of the trailing context.  Lex won't get these
  629.       patterns right either.
  630.  
  631.     - Faster scanners.
  632.  
  633.     - End-of-file rules.  The special rule "<<EOF>>" indicates
  634.       actions which are to be taken when an end-of-file is
  635.       encountered and yywrap() returns non-zero (i.e., indicates
  636.       no further files to process).  See manual entry for example.
  637.  
  638.     - The -r (reject used) flag is gone.  flex now scans the input
  639.       for occurrences of the string "REJECT" to determine if the
  640.       action is needed.  It tries to be intelligent about this but
  641.       can be fooled.  One can force the presence or absence of
  642.       REJECT by adding a line in the first section of the form
  643.       "%used REJECT" or "%unused REJECT".
  644.  
  645.     - yymore() has been implemented.  Similarly to REJECT, flex
  646.       detects the use of yymore(), which can be overridden using
  647.       "%used" or "%unused".
  648.  
  649.     - Patterns like "x{0,3}" now work (i.e., with lower-limit == 0).
  650.  
  651.     - Removed '\^x' for ctrl-x misfeature.
  652.  
  653.     - Added '\a' and '\v' escape sequences.
  654.  
  655.     - \<digits> now works for octal escape sequences; previously
  656.       \0<digits> was required.
  657.  
  658.     - Better error reporting; line numbers are associated with rules.
  659.  
  660.     - yyleng is a macro; it cannot be accessed outside of the
  661.       scanner source file.
  662.  
  663.     - yytext and yyleng should not be modified within a flex action.
  664.  
  665.     - Generated scanners #define the name FLEX_SCANNER.
  666.  
  667.     - Rules are internally separated by YY_BREAK in lex.yy.c rather
  668.       than break, to allow redefinition.
  669.  
  670.     - The macro YY_USER_ACTION can be redefined to provide an action
  671.       which is always executed prior to the matched rule's action.
  672.     
  673.     - yyrestart() is a new action which can be used to restart
  674.       the scanner after it has seen an end-of-file (a "real" one,
  675.       that is, one for which yywrap() returned non-zero).  It takes
  676.       a FILE* argument indicating a new file to scan and sets
  677.       things up so that a subsequent call to yylex() will start
  678.       scanning that file.
  679.  
  680.     - Internal scanner names all preceded by "yy_"
  681.  
  682.     - lex.yy.c is deleted if errors are encountered during processing.
  683.  
  684.     - Comments may be put in the first section of the input by preceding
  685.       them with '#'.
  686.  
  687.  
  688.  
  689.     Other changes:
  690.  
  691.     - Some portability-related bugs fixed, in particular for machines
  692.       with unsigned characters or sizeof( int* ) != sizeof( int ).
  693.       Also, tweaks for VMS and Microsoft C (MS-DOS), and identifiers all
  694.       trimmed to be 31 or fewer characters.  Shortened file names
  695.       for dinosaur OS's.  Checks for allocating > 64K memory
  696.       on 16 bit'ers.  Amiga tweaks.  Compiles using gcc on a Sun-3.
  697.     - Compressed and fast scanner skeletons merged.
  698.     - Skeleton header files done away with.
  699.     - Generated scanner uses prototypes and "const" for __STDC__.
  700.     - -DSV flag is now -DSYS_V for System V compilation.
  701.     - Removed all references to FTL language.
  702.     - Software now covered by BSD Copyright.
  703.     - flex will replace lex in subsequent BSD releases.
  704.